package com.ctshk.rpc.finance.req.bill;

import com.ctshk.rpc.finance.json.AccountJson;
import com.ctshk.rpc.finance.json.FileJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 新增退款认款req
 */
@Data
@ApiModel(value = "BillAddRefundReq",description = "新增退款认款req")
public class BillAddRefundReq implements Serializable {

    @NotNull(message = "单号不能为空")
    @ApiModelProperty(value = "退款单号",required = true)
    private String billNumber;

    @NotNull(message = "业务类型不能为空")
    @ApiModelProperty(value = "业务类型",required = true)
    private Integer businessType;

    @NotNull(message = "退款金额不能为空")
    @ApiModelProperty(value = "退款金额",required = true)
    private BigDecimal collectionAmount;

    @NotNull(message = "币种ID不能为空")
    @ApiModelProperty(value = "币种ID",required = true)
    private Long currencyId;

    @NotNull(message = "币种名称不能为空")
    @ApiModelProperty(value = "币种名称（如：HKD）",required = true)
    private String currencyName;

    @NotNull(message = "汇率不能为空")
    @ApiModelProperty(value = "汇率",required = true)
    private Double exchangeRate;

    @NotNull(message = "销售单号不能为空")
    @ApiModelProperty(value = "订单号",required = true)
    private String saleOrderNumber;

    @NotNull(message = "销售单ID不能为空")
    @ApiModelProperty(value = "订单ID",required = true)
    private Long saleOrderId;

    @NotNull(message = "产品ID列表不能为空")
    @ApiModelProperty(value = "产品ID列表",required = true)
    private List<Long> productId;

    @NotNull(message = "产品编号/团号不能为空")
    @ApiModelProperty(value = "产品编号/团号",required = true)
    private String productNumber;

    @NotNull(message = "产品名称不能为空")
    @ApiModelProperty(value = "产品名称",required = true)
    private String productName;

    @NotNull(message = "资源信息列表不能为空")
    @ApiModelProperty(value = "资源信息列表",required = true)
    private List<String> resourceInfo;

    @NotNull(message = "销售人员ID不能为空")
    @ApiModelProperty(value = "销售人员ID（订单创建人）",required = true)
    private Long saleUserId;

    @NotNull(message = "销售人员名称不能为空")
    @ApiModelProperty(value = "销售人员名称",required = true)
    private String saleUserName;

    @NotNull(message = "销售部门ID不能为空")
    @ApiModelProperty(value = "销售部门ID",required = true)
    private Long saleDeptId;

    @NotNull(message = "退款方式ID不能为空")
    @ApiModelProperty(value = "退款方式ID",required = true)
    private Long refundTypeId;

    @NotNull(message = "退款方式不能为空")
    @ApiModelProperty(value = "退款方式",required = true)
    private String refundType;

    @ApiModelProperty(value = "退款方式ID")
    private Long typeId;

    @ApiModelProperty(value = "退款方式")
    private String type;

    @ApiModelProperty(value = "退款账户JSON")
    private AccountJson refundAccountJson;

    @NotNull(message = "旅客来源不能为空")
    @ApiModelProperty(value = "旅客来源1 散客 2 大客户 3 代理商",required = true)
    private Integer touristSource;

    @ApiModelProperty(value = "大客户ID")
    private Long bigClientId;

    @ApiModelProperty(value = "大客户名称")
    private String bigClientName;

    @ApiModelProperty(value = "旅客姓名")
    private String touristName;

    @ApiModelProperty(value = "联系电话")
    private String contactMobile;

    @NotNull(message = "退款时间不能为空")
    @ApiModelProperty(value = "退款时间",required = true)
    private LocalDateTime refundTime;

    @ApiModelProperty(value = "付款凭证")
    private List<FileJson> payVoucherJson;

    @ApiModelProperty(value = "退款备注")
    private String refundRemark;

    @NotNull(message = "用户ID不能为空")
    @ApiModelProperty(value = "用户ID",required = true)
    private Long userId;

    private Long scheduleId;
}
